<template>
	<view class="body">
		<image class="findback" :style="'height:'+height+'px'" src="https://zaiyiqi-1322608024.cos.ap-nanjing.myqcloud.com/static/img/find/findback.png" mode="aspectFit"></image>
		<headers :is_slot="true" position="sticky" :showback="true" navBackcolor="transparent">
			<view class="find-header u-flex">
				<view :class="(tabIndex == item.id) ? 'act' : ''" class="find-header-item" v-for="(item, index) in navList"
					@click="changeNav(item)" :key="index">
					{{ item.title }}
					<image v-if="tabIndex == item.id" src="https://zaiyiqi-1322608024.cos.ap-nanjing.myqcloud.com/static/img/index/index-bottom.png" mode=""></image>
				</view>
			</view>
		</headers>
		<view class="find-square-tablist u-flex" :style="'top:' + height + 'px'" v-if="tabIndex == 0">
			<view :class="item.id == tabs ? 'act' : ''" class="find-square-tablist-item" v-for="(item, index) in tabsList"
				@click="changeTabsFun(item)" :key="index">
				{{ item.title }}
				<image v-if="tabs == item.id" src="https://zaiyiqi-1322608024.cos.ap-nanjing.myqcloud.com/static/img/index/index-bottom.png"
					style="width: 56rpx;height: 4rpx;" mode=""></image>
			</view>
		</view>
		<view class="find">
			<view :class="showPublishPageState ? 'filter' : ''">
				<view class="find-main">
					<!-- 广场 -->
					<find-square v-if="tabIndex == 0 || tabIndex == 2" :tabs="tabs"></find-square>
					<!-- 活动 -->
					<find-activity v-if="tabIndex == 1"></find-activity>
				</view>
				<u-tabbar :v-model="0" :iconSize="48" :height="100" :midButtonSize="112" inactiveColor="#999999"
					activeColor="#2E3033" :list="tabList" :mid-button="true" @change="changeTab"></u-tabbar>
			</view>
		</view>
		<publish></publish>
	</view>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
import headers from '@/components/headers/index.vue'
import findSquare from '../../components/find-square/find-square.vue'
import findActivity from '../../components/find-activity/find-activity.vue'
import publish from '../../components/publish/publish.vue'
export default {
	// 组件名称
	name: 'demo',
	// 组件参数 接收来自父组件的数据
	props: {},
	// 局部注册的组件,import引入的组件需要注入到对象中才能使用
	components: {
		headers,
		findSquare,
		findActivity,
		publish
	},
	// 组件状态值
	data() {
		return {
			tabList: this.$store.getters.tabList,
			tabIndex: 0,
			navList: [
				{
					id: 0,
					title: '广场'
				}, {
					id: 1,
					title: '活动'
				}, {
					id: 2,
					title: '撒喜糖'
				}
			],
			tabs: 2,
			tabsList: [
				{
					id: 1,
					title: "同城"
				}, {
					id: 2,
					title: "推荐"
				}, {
					id: 3,
					title: "最新"
				},
				//  {
				// 	id: 4,
				// 	title: "撒喜糖"
				// },
				{
					id: 5,
					title: "求助"
				}, {
					id: 6,
					title: "匿名"
				}, {
					id: 7,
					title: "投票"
				}
			],
			height: 0
		}
	},
	// 计算属性
	computed: {
		showPublishPageState() {
			return this.$store.getters.showPublishPage
		}
	},
	// 侦听器
	watch: {},
	// 组件方法
	methods: {
		changeTab(e) {
			console.log(e)
			if (e == 2) {
				this.$store.commit("changeShowPublishPage", true)
			}
		},
		// 切换 广场/活动
		changeNav(item) {
			// 撒喜糖
			if (item.id == 2) {
				this.tabs = 4
			} else {
				this.tabs = 2
			}
			this.tabIndex = item.id
		},
		// 切换子分类
		changeTabsFun(item) {
			this.tabs = item.id
		},
	},
	onLoad(option) {
		if(option.tabs){
			this.tabs = option.tabs
			this.$forceUpdate()
		}
	},
	// 以下是生命周期钩子   注：没用到的钩子请自行删除
	/**
	 * 在实例初始化之后，组件属性计算之前，如data属性等
	 */
	beforeCreate() { },
	/**
	 * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
	 */
	created() {
		let menuButtonInfo = uni.getMenuButtonBoundingClientRect()
		this.height = menuButtonInfo.height + menuButtonInfo.top + 8
	},
	/**
	 * 在挂载开始之前被调用：相关的 render 函数首次被调用。
	 */
	beforeMount() { },
	/**
	 * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
	 * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
	 */
	mounted() { },
	/**
	 * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
	 * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
	 */
	beforeUpdate() { },
	/**
	 * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
	 * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
	 */
	updated() { },
	/**
	 * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
	 */
	activated() { },
	/**
	 * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
	 */
	deactivated() { },
	/**
	 * 实例销毁之前调用。在这一步，实例仍然完全可用。
	 */
	beforeDestroy() { },
	/**
	 * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
	 * 所有的事件监听器会被移除，所有的子实例也会被销毁。
	 */
	destroyed() { }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<style scoped lang="scss">
.body {
	min-height: 100vh;
	background: linear-gradient(to bottom, #FAFAFA, #FFFFFF);
}

.findback {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 6;
	background: #FAFAFA;
}

.find-header {
	// height: 88rpx;
	// line-height: 88rpx;
	text-align: center;
	justify-content: center;

	&-item {
		width: 120rpx;
		text-align: center;
		position: relative;
		font-size: 28rpx;
		font-family: PingFang SC-Medium, PingFang SC;
		font-weight: 500;
		color: #8A9199;
	}

	.act {
		position: relative;
		font-size: 32rpx;
		font-family: PingFang SC-Bold, PingFang SC;
		font-weight: bold;
		color: #2E3033;

		image {
			position: absolute;
			bottom: -12rpx;
			left: 50%;
			margin-left: -28rpx;
			width: 56rpx;
			height: 4rpx;
		}
	}
}

.find-square-tablist {
	height: 80rpx;
	position: sticky;
	left: 0;
	width: 100%;
	background: #FAFAFA;
	z-index: 7;
	padding: 0px 12rpx;

	&-item {
		flex: 1;
		font-size: 28rpx;
		font-family: PingFang SC-Medium, PingFang SC;
		font-weight: 500;
		color: #8A9199;
		text-align: center;
	}

	.act {
		font-size: 28rpx;
		font-family: PingFang SC-Bold, PingFang SC;
		font-weight: bold;
		color: #2E3033;
		position: relative;

		image {
			position: absolute;
			bottom: -12rpx;
			left: 50%;
			margin-left: -28rpx;
		}
	}
}

.find {
	width: 100%;
	height: 100%;
	padding: 0 32rpx;

	&-main {
		height: calc(100% - 88rpx);
		// overflow-y: auto;
		// height: calc(100% - 168rpx);
	}
}
</style>
